package com.LambdaDemo.Test02;

/*
* 练习2
	定义一个接口（Flyable），里面定义一个抽象方法：void fly（String s）
	定义一个测试类（FlyableDemo），在测试类中提供两个方法
一个方法：useFlyable（Flyable f）
一个方法时主方法，在主方法中调用useFlyable方法
* */

public class FlyableDemo {
    public static void main(String[] args) {
        //在主方法中调用useFlyable方法
//        FlyableImpl f = new FlyableImpl();
//        useFlyable(f);

        //匿名内部类
//        useFlyable(new Flyable() {
//            @Override
//            public void fly(String s) {
//                System.out.println(s);
//            }
//        });

        //Lambda表达式方式
//        useFlyable((String s)->{
//            System.out.println(s);
//            System.out.println("飞机自驾游");
//        });
        //如果参数有且仅有一个，小括号可以省略
//        useFlyable(s -> {
//            System.out.println(s);
//        });
        //如果代码块的语句只有一条，可以省略大括号和分号
        useFlyable(s -> System.out.println(s));

    }

    public static void useFlyable(Flyable f) {
        f.fly("风和日丽，晴空万里");
    }
}
